home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / MEMORY.ASM < prev    next >
Assembly Source File  |  1993-05-04  |  2KB  |  57 lines

  1. ;**************************;
  2. ; WASM Memory Module       ;
  3. ; By Eric Tauck            ;
  4. ;                          ;
  5. ; Defines:                 ;
  6. ;                          ;
  7. ;   MemAll  allocate block ;
  8. ;   MemRel  release block  ;
  9. ;**************************;
  10.  
  11.         jmps    _memory_end
  12.  
  13. ;========================================
  14. ; Allocate a memory block.
  15. ;
  16. ; In: AX= bytes to allocate (0FFF0H max).
  17. ;
  18. ; Out: AX= segment of block; DX= bytes
  19. ;      allocated or maximum bytes
  20. ;      available; CY= set if error.
  21.  
  22. MemAll  PROC   NEAR
  23.         mov     bx, ax
  24.         mov     cl, 4
  25.         shr     bx, cl          ;convert to paragraph
  26.         test    ax, 1111B       ;check if any low bits set
  27.         jz      _mmall1         ;skip round if not
  28.         inc     bx              ;round paragraph up
  29. _mmall1 mov     ax, bx
  30.         shl     ax, cl          ;convert back to bytes
  31.         push    ax
  32.         mov     ah, 48H         ;allocate function
  33.         int     21H             ;execute
  34.         pop     dx              ;restore byte count
  35.         jnc     _mmall2         ;jump if no error
  36.         shl     bx, cl          ;convert to bytes
  37.         mov     dx, bx          ;return in DX
  38.         stc
  39. _mmall2 ret
  40.         ENDP
  41.  
  42. ;========================================
  43. ; Release a memory block.
  44. ;
  45. ; In: AX= segment of block.
  46.  
  47. MemRel  PROC   NEAR
  48.         push    es
  49.         mov     es, ax
  50.         mov     ah, 49H         ;release function
  51.         int     21H             ;execute
  52.         pop     es
  53.         ret
  54.         ENDP
  55.  
  56. _memory_end
  57.